#pragma comment (linker, "/STACK:100000000")
#include <stdio.h>
#include <vector>
using namespace std;
#define N 50100
vector <int> m[N], v[N];
int u[N], s[N][N/32], n, k, h[1<<16];
void dfs(int i)
{
	int j, t, l;
	u[i]=1;
	for(j=0; j<m[i].size(); j++)
	{
		l=m[i][j];
		if(!u[l]) dfs(l);
		for(t=0; t<k; s[i][t]|=s[l][t], t++);
		s[i][l>>5]|=1<<(l&31);
	}
}
void gen(int i, int j, int t)
{
	if(i==16) h[t]=j;
	else { gen(i+1, j, 2*t); gen(i+1, j+1, 2*t+1); }
}
int main()
{
	int i, j;
	int r;
	gen(0, 0, 0);
	for(scanf("%d%d", &n, &k); k--; scanf("%d%d", &i, &j), m[i-1].push_back(j-1));
	k=(n+31)/32;
	for(i=0; i<n; i++)
		if(!u[i]) dfs(i);
	for(r=0, i=0; i<n; i++)
		for(j=0; j<k; r+=h[s[i][j]&65535]+h[(s[i][j]>>16)&65535], j++);
	printf("%d\n", r);
	return 0;
}